草庐IT

iOS crash捕获:NSSetUncaughtExceptionHandler

全部标签

c++ - 在构造函数中捕获异常

以下示例可能会导致内存泄漏,因为析构函数不会针对在其构造函数运行期间处理异常的对象运行。我在哪里处理这个内存泄漏?#includeclassMyClass{public:MyClass(){c=newchar[5];throwstd::runtime_error("test");}~MyClass(){delete[]c;}private:char*c;};intmain(){try{MyClassObj;}catch(std::runtime_error){}} 最佳答案 在构造函数中捕获异常,整理(释放内存),然后在没有内存泄漏

c++ - 当整数变量不能保存它不应该保存的值时,是否在 C++ 中的运行时捕获了 overflow_error

我正在学习C++,我试图编写这个函数来找到可以适合整数类型的最大斐波那契整数:voidfindFibThatFitsInAnInt(){intn1=1;intn2=1;intfib=0;try{while(true){fib=n1+n2;n1=n2;n2=fib;cout但问题是overflow_error根本没有被捕获。我知道这样做的其他方法:我知道我可以这样写:while(fib>=0){fib=n1+n2;n1=n2;n2=fib;cout并且因为fib只是一个“int”而不是一个unsignedint,所以当它被分配一个大于int类型容量的值时,它最终会变成问题是:在C++中是

c++ - 为什么在创建数组期间在 C++ 中抛出未捕获的异常时不调用析构函数?

classXX{public:staticunsigneds_cnt;XX(){++s_cnt;std::cout2)throwstd::exception();}//private:~XX(){std::cout输出:CXX1CXX2CXX3~XX~XXExc但是当我删除try-catch时,我看到:CXX1CXX2CXX3terminatecalledafterthrowinganinstanceof'std::exception'what():std::exceptionzsh:abort./a.out为什么C++在第一种情况下调用析构函数而在第二种情况下不调用?

c++ - 为什么 OnKeyDown 不捕获基于对话框的 MFC 项目中的按键事件?

我只是在MFC(VS2008)中创建了一个基于对话框的项目,并将OnKeyDown事件添加到对话框中。当我运行项目并按下键盘上的键时,没有任何反应。但是,如果我从对话框中删除所有控件并重新运行项目,它就会工作。即使我在对话框上有控件,我应该怎么做才能获得关键事件?这是一段代码:voidCgDlg::OnKeyDown(UINTnChar,UINTnRepCnt,UINTnFlags){//TODO:Addyourmessagehandlercodehereand/orcalldefaultAfxMessageBox(L"Keydown!");CDialog::OnKeyDown(nCh

c++ - 为什么通过 int& 捕获 const int& 有效?

在下面的代码中,我抛出一个int,将其作为constint&捕获,重新抛出并再次捕获它,将其作为int&捕获。#includeintmain(){try{try{intx=1;throwx;}catch(constint&e){std::cout以上程序编译成功并打印InnercatchOutercatch另一方面,我试图通过constint&初始化int&的以下程序甚至无法编译。#includeintmain(){intx=0;constint&y=x;int&z=yreturn0;}我得到了预期的以下错误binding‘constint’toreferenceoftype‘int&

c++ - 如何在 lambda 表达式中捕获单个类数据成员?

我知道以下问题:C++11lambdas:membervariablecapturegotcha。此外,我知道需要通过捕获this指针来捕获类成员,正如这个问题的答案所明确指出的那样。Yes.Capturingmembervariablesisalwaysdoneviacapturingthis;itistheonlywaytoaccessamembervariable.但是,捕获this指针捕获所有类成员。是否可以限制捕获哪些类(class)成员?例如,是否可以捕获单个类成员?我知道以下方法行不通,但有可能实现吗?classFoo{public:Foo():mBar1(1),mBar

c++ - 从谷歌日志库的 CHECK 宏中捕获 C++ 异常

我正在使用一个库,该库利用谷歌日志记录库来记录错误并使用CHECK宏检查断言。在我的代码中,我想在CHECK条件失败时捕获异常(例如,当应用程序因文件不存在而无法打开文件时),但即使使用catch(...)它没有捕捉到任何东西,程序无法控制地崩溃。有没有办法在CHECK宏失败时捕获异常?或者,如果不可能,是否有解决这些情况的方法? 最佳答案 如officialdocument中所述的glog,你可以使用User-definedFailureFunction替换默认的exit()行为。例子:voidYourFailureFunctio

c++ - 在 Mac OS X 上以多态方式捕获 -fno-rtti 共享库中的异常

我正在使用f-no-rtti构建一个共享库。在内部,此库抛出std:invalid_argument并捕获std::exception,但从未输入catch子句。以下代码重现了该问题(g++4.2、MacOSX10.6)://library.cpp:exportsf(),compiledwith-fno-rtti#include#includeextern"C"{voidf(){try{throwstd::invalid_argument("std::exceptionhandler");}catch(std::exception&e){std::cout//main.cpp:them

c++ - this指针是如何捕获的?

考虑以下代码:structS{intx;voidf(){autol=[&](){x=42;};//thisisimplicitlycapturedhere}};§5.1.2/14指出:Anentityiscapturedbycopyifitisimplicitlycapturedandthecapture-defaultis=orifitisexplicitlycapturedwithacapturethatdoesnotincludean&.因此我得出结论,this不是通过复制捕获。但随后通过§5.1.2/15:Anentityiscapturedbyreferenceifitisi

c++ - Visual Studio 2013 c++ lambda 捕获参数包

目前VisualStudio2013更新2不支持完整的C++11,其中一个功能是在lambda中捕获参数包。有没有一种简单的方法可以解决这个问题,或者我将不得不放弃visualstudio并使用兼容的编译器,例如mingw/g++?以下代码演示了我所想的一个简单用例:templatestd::threadinit_threaded(SomeObjectsample,Args&&...args){autofunc=[=](){sample->init(args...);};returnstd::thread(func);}这在linux下的最新xcode(5.1.1)和最新版本的g++(